﻿package com.tudou.cookie
{
    import com.tudou.consts.*;
    import com.tudou.model.*;
    import com.tudou.utils.*;

    public class PlayerSO extends Object
    {
        private var baseInfo:IBaseInfo;
        private var tudouSo:ICookie;
        private static const CUSTOM_LENGTH:uint = 15;
        private static var instance:PlayerSO = null;

        public function PlayerSO()
        {
            tudouSo = TudouSO.getInstance();
            compatibleProcess();
            return;
        }// end function

        private function getValue(param1:String)
        {
            var _loc_4:Object = null;
            var _loc_5:int = 0;
            var _loc_2:* = baseInfo.iid;
            var _loc_3:* = tudouSo.getValue(CookieConsts.CUSTOMS);
            if (_loc_3 == null)
            {
                _loc_3 = [];
                tudouSo.setValue(CookieConsts.CUSTOMS, _loc_3);
                return null;
            }
            _loc_5 = 0;
            while (_loc_5 < _loc_3.length)
            {
                
                _loc_4 = _loc_3[_loc_5];
                if (_loc_4.iid == _loc_2)
                {
                    return _loc_4[param1];
                }
                _loc_5++;
            }
            return null;
        }// end function

        public function set playListSingleContinue(param1:Boolean) : void
        {
            tudouSo.setValue(CookieConsts.PLAYLIST_SINGLE_CONTINUE, param1);
            return;
        }// end function

        public function set juid(param1:String) : void
        {
            tudouSo.setValue(CookieConsts.JUID, param1);
            return;
        }// end function

        public function get videoScale() : Number
        {
            return 0;
        }// end function

        public function get rateSetting() : RateSettingData
        {
            var _loc_1:* = tudouSo.getValue(CookieConsts.RATE_SETTING);
            var _loc_2:* = new RateSettingData();
            if (_loc_1 == null)
            {
                _loc_2.type = RateSettingData.DEFAULT;
            }
            else
            {
                _loc_2.type = _loc_1["type"];
                _loc_2.rateType = _loc_1["rateType"];
            }
            return _loc_2;
        }// end function

        public function get skipSetting() : SkipSettingData
        {
            var _loc_1:* = tudouSo.getValue(CookieConsts.SKIP_SETTING);
            var _loc_2:* = new SkipSettingData();
            if (_loc_1 == null)
            {
                _loc_2.skipIntro = false;
                _loc_2.skipOutro = false;
            }
            else
            {
                _loc_2.skipIntro = _loc_1["skipIntro"];
                _loc_2.skipOutro = _loc_1["skipOutro"];
            }
            return _loc_2;
        }// end function

        public function init(param1:IBaseInfo) : void
        {
            baseInfo = param1;
            return;
        }// end function

        public function get brightness() : Number
        {
            var _loc_1:* = tudouSo.getValue(CookieConsts.BRIGHTNESS);
            if (isNaN(_loc_1))
            {
                _loc_1 = 0;
            }
            if (_loc_1 > 1)
            {
                _loc_1 = 1;
            }
            if (_loc_1 < -1)
            {
                _loc_1 = -1;
            }
            return _loc_1;
        }// end function

        public function get mute() : Boolean
        {
            return tudouSo.getValue(CookieConsts.MUTE);
        }// end function

        public function get volume() : Number
        {
            var _loc_1:* = tudouSo.getValue(CookieConsts.VOLUME);
            if (isNaN(_loc_1))
            {
                _loc_1 = 1;
            }
            else
            {
                _loc_1 = MathUtil.unit(_loc_1);
            }
            return _loc_1;
        }// end function

        public function set videoScale(param1:Number) : void
        {
            return;
        }// end function

        public function set rateSetting(param1:RateSettingData) : void
        {
            if (param1 == null)
            {
                return;
            }
            tudouSo.setValue(CookieConsts.RATE_SETTING, param1);
            return;
        }// end function

        public function get playListSingleContinue() : Boolean
        {
            var _loc_1:* = tudouSo.getValue(CookieConsts.PLAYLIST_SINGLE_CONTINUE);
            if (_loc_1 == null)
            {
                return true;
            }
            return _loc_1 as Boolean;
        }// end function

        public function set brightness(param1:Number) : void
        {
            if (isNaN(param1))
            {
                param1 = 0;
            }
            if (param1 > 1)
            {
                param1 = 1;
            }
            if (param1 < -1)
            {
                param1 = -1;
            }
            tudouSo.setValue(CookieConsts.BRIGHTNESS, param1);
            return;
        }// end function

        public function get juid() : String
        {
            return tudouSo.getValue(CookieConsts.JUID);
        }// end function

        public function set skipSetting(param1:SkipSettingData) : void
        {
            if (param1 == null)
            {
                return;
            }
            tudouSo.setValue(CookieConsts.SKIP_SETTING, param1);
            return;
        }// end function

        public function set rotateType(param1:int) : void
        {
            if (param1 < RotateType.ANGLE_0)
            {
                param1 = RotateType.ANGLE_0;
            }
            if (param1 > RotateType.ANGLE_270)
            {
                param1 = RotateType.ANGLE_270;
            }
            setValue(CookieConsts.ROTATE_TYPE, param1);
            return;
        }// end function

        private function setValue(param1:String, param2) : void
        {
            var _loc_5:Object = null;
            var _loc_3:* = baseInfo.iid;
            var _loc_4:* = tudouSo.getValue(CookieConsts.CUSTOMS);
            if (tudouSo.getValue(CookieConsts.CUSTOMS) == null)
            {
                _loc_4 = [];
            }
            var _loc_6:int = 0;
            while (_loc_6 < _loc_4.length)
            {
                
                _loc_5 = _loc_4[_loc_6];
                if (_loc_5.iid == _loc_3)
                {
                    break;
                }
                _loc_6++;
            }
            if (_loc_6 < _loc_4.length)
            {
                _loc_5[param1] = param2;
            }
            else
            {
                if (_loc_4.length >= CUSTOM_LENGTH)
                {
                    _loc_4.shift();
                }
                _loc_5 = {};
                _loc_5[param1] = param2;
                _loc_5.iid = _loc_3;
                _loc_4.push(_loc_5);
            }
            tudouSo.setValue(CookieConsts.CUSTOMS, _loc_4);
            return;
        }// end function

        public function set listRateType(param1:int) : void
        {
            if (param1 == RateType.P256 || param1 == RateType.P360 || param1 == RateType.P480 || param1 == RateType.P720 || RateType.ORIGINAL)
            {
                setListValue(CookieConsts.RATE_TYPE, param1);
            }
            return;
        }// end function

        private function setListValue(param1:String, param2) : void
        {
            var _loc_5:Object = null;
            var _loc_3:* = baseInfo.lid;
            var _loc_4:* = tudouSo.getValue(CookieConsts.LIST_CUSTOMS);
            if (tudouSo.getValue(CookieConsts.LIST_CUSTOMS) == null)
            {
                _loc_4 = [];
            }
            var _loc_6:int = 0;
            while (_loc_6 < _loc_4.length)
            {
                
                _loc_5 = _loc_4[_loc_6];
                if (_loc_5.lid == _loc_3)
                {
                    break;
                }
                _loc_6++;
            }
            if (_loc_6 < _loc_4.length)
            {
                _loc_5[param1] = param2;
            }
            else
            {
                if (_loc_4.length >= CUSTOM_LENGTH)
                {
                    _loc_4.shift();
                }
                _loc_5 = {};
                _loc_5[param1] = param2;
                _loc_5.lid = _loc_3;
                _loc_4.push(_loc_5);
            }
            tudouSo.setValue(CookieConsts.LIST_CUSTOMS, _loc_4);
            return;
        }// end function

        public function set mute(param1:Boolean) : void
        {
            tudouSo.setValue(CookieConsts.MUTE, param1);
            return;
        }// end function

        public function getUsed(param1:String) : Boolean
        {
            var _loc_2:* = tudouSo.getValue(CookieConsts.USED);
            if (_loc_2)
            {
                return _loc_2[param1];
            }
            return false;
        }// end function

        public function set volume(param1:Number) : void
        {
            param1 = MathUtil.unit(param1);
            tudouSo.setValue(CookieConsts.VOLUME, param1);
            return;
        }// end function

        public function get rotateType() : int
        {
            var _loc_1:* = getValue(CookieConsts.ROTATE_TYPE);
            if (_loc_1 < RotateType.ANGLE_0)
            {
                _loc_1 = RotateType.ANGLE_0;
            }
            if (_loc_1 > RotateType.ANGLE_270)
            {
                _loc_1 = RotateType.ANGLE_270;
            }
            return _loc_1;
        }// end function

        public function get listRateType() : int
        {
            var _loc_1:* = getListValue(CookieConsts.RATE_TYPE);
            if (_loc_1 == null)
            {
                return RateType.UNDEFINED;
            }
            return _loc_1;
        }// end function

        protected function compatibleProcess() : void
        {
            tudouSo.deleteValue(CookieConsts.OLD_CUTSTOM);
            tudouSo.deleteValue(CookieConsts.RATE);
            var _loc_1:* = tudouSo.getValue(CookieConsts.WIDE_SCREEN);
            if (_loc_1)
            {
                setUsed(CookieConsts.WIDE_SCREEN, true);
            }
            tudouSo.deleteValue(CookieConsts.WIDE_SCREEN);
            return;
        }// end function

        private function getListValue(param1:String)
        {
            var _loc_4:Object = null;
            var _loc_5:int = 0;
            var _loc_2:* = baseInfo.lid;
            var _loc_3:* = tudouSo.getValue(CookieConsts.LIST_CUSTOMS);
            if (_loc_3 == null)
            {
                _loc_3 = [];
                tudouSo.setValue(CookieConsts.LIST_CUSTOMS, _loc_3);
                return null;
            }
            _loc_5 = 0;
            while (_loc_5 < _loc_3.length)
            {
                
                _loc_4 = _loc_3[_loc_5];
                if (_loc_4.lid == _loc_2)
                {
                    return _loc_4[param1];
                }
                _loc_5++;
            }
            return null;
        }// end function

        public function setUsed(param1:String, param2:Boolean) : void
        {
            var _loc_3:* = tudouSo.getValue(CookieConsts.USED);
            if (_loc_3 == null)
            {
                _loc_3 = [];
            }
            _loc_3[param1] = param2;
            tudouSo.setValue(CookieConsts.USED, _loc_3);
            return;
        }// end function

        public static function getInst() : PlayerSO
        {
            var _loc_1:* = instance || new PlayerSO;
            instance = instance || new PlayerSO;
            return _loc_1;
        }// end function

    }
}
